<?php

namespace ListMenu\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use ListMenu\Form\ListMenuForm;
use ListMenu\Form\Filter\ListMenuFilter;
use ListMenu\Model\ListMenu;
use Zend\Form\Element;

class IndexController extends HeadController
{
	protected $MenuTable;
	
    public function indexAction()
    {	    	
    	$this -> headsAction();
    	$this->layout('layout/backend');
         $listmenu = $this->getMenuTable()->fetchAll();
        return new ViewModel(array(
                'menu' => $listmenu,
        		'countMenu' => $this->getMenuTable()->countMenu()
         ));
        
    }
    
    public function addAction(){
    	$this -> headsAction();
    	$this->layout('layout/backend');
    	//Khởi tạo đối tượng ProductForm
    	$request = $this->getRequest();
    	$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
    	$form = new ListMenuForm(null,$dbAdapter); 
    	$form->setInputFilter(new ListMenuFilter() );
    	if($request->isPost()){
    		$data = $request->getPost();
    		$form->setData($data);
    		$menu = new ListMenu();
    		if($form->isValid()){
    			$menu->addArray($data);
    		    $this->getMenuTable()->saveListMenu($menu,0);  			
    			// Redirect to list of product
    			return $this->redirect()->toRoute('listmenu');
    			}
    		}   	
    	
    	//Truyền đối tượng UserForm vào đối tượng ProductForm
    	$viewModel  = new ViewModel(array(
    			                'ListMenuForm' => $form,
    	));	 
    	//Đưa đối tượng ViewModel ra ngoài VIEW
    	return $viewModel;
    }
     
    
    public function editAction(){
    	$this->layout('layout/backend');
    	
    	$id = (int) $this->params()->fromRoute('id', 0);
    	
    	if (!$id) {
    		return $this->redirect()->toRoute('listmenu', array(
    				'action' => 'add'
    		));
    	}else{   	
    		//get url hien tai var_dump($this->request->getRequestUri());die;    		    	  	
    	$menu = $this->getMenuTable ()->getMenu ( $id );
    	if(empty($menu)){
    		 return $this->notFoundAction ();
    	}else{ 
    		$urlhientai = $this->request->getRequestUri();
    		$url = '/menu/edit/'.$id.'-'.$this->vn2latin($menu->LABEL_M).'.html';
    		if($urlhientai != $url)
    			$this->redirect()->toUrl($url);
	    	$request = $this->getRequest();
	    	$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');
	    	$form = new ListMenuForm(null,$dbAdapter);
	    	$form->setInputFilter(new ListMenuFilter() );
	    	$form->bind ( $menu );
	    	//Truyền đối tượng UserForm vào đối tượng ProductForm
	    	$viewModel  = new ViewModel(array(
	    			'menu' => $form,
	    	));
	    	$this -> headsAction($menu->LABEL_M);
	    	if($request->isPost()){
	    		$data = $request->getPost();	    	
	    		$form->setData($data);
	    		$menulist = new ListMenu();
	    		if($form->isValid()){
    			                	$menulist->addArray($data);
    			                	$this->getMenuTable()->saveListMenu($menulist,$id);    			                	
    			                	// Redirect to list of product
    			                	return $this->redirect()->toRoute('listmenu');
    			                     			                
	    	    			}
	    	    		};
	    	    		
				    	//Đưa đối tượng ViewModel ra ngoài VIEW
				    	return $viewModel;
    	  }
    	}
    }
    
    
    public function deleteAction()
    {
    	  $id = $this->params()->fromRoute('id');
    		$this->getMenuTable()->deleteMenu($id);
    		return $this->redirect()->toRoute('listmenu');
    	
    }
  
    public function getMenuTable()
    {
    	if (!$this->MenuTable) {
    		$sm = $this->getServiceLocator();
    		$this->MenuTable = $sm->get('ListMenu\Model\ListMenuTable');
    	}
    	return $this->MenuTable;
    }
    
    /* định dạng chuỗi nhập
     tham số $tolower, true nếu bạn muốn nhận chuỗi không dấu dưới dạng viết thường,
     false sẽ trả về chữ không dấu còn viết hoa hay viết thường thì duy trì như chuỗi ban đầu đưa vào. */
    function vn2latin($cs, $tolower = false)
    {
    	/*Mảng chứa tất cả ký tự có dấu trong Tiếng Việt*/
    	$marTViet=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
    			"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề",
    			"ế","ệ","ể","ễ",
    			"ì","í","ị","ỉ","ĩ",
    			"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ",
    			"ờ","ớ","ợ","ở","ỡ",
    			"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
    			"ỳ","ý","ỵ","ỷ","ỹ",
    			"đ",
    			"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă",
    			"Ằ","Ắ","Ặ","Ẳ","Ẵ",
    			"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
    			"Ì","Í","Ị","Ỉ","Ĩ",
    			"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ","Ờ","Ớ","Ợ","Ở","Ỡ",
    			"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
    			"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
    			"Đ"," ","/",":","*","?","<",">","|",'"');
    
    	/*Mảng chứa tất cả ký tự không dấu tương ứng với mảng $marTViet bên trên*/
    	$marKoDau=array("a","a","a","a","a","a","a","a","a","a","a",
    			"a","a","a","a","a","a",
    			"e","e","e","e","e","e","e","e","e","e","e",
    			"i","i","i","i","i",
    			"o","o","o","o","o","o","o","o","o","o","o","o",
    			"o","o","o","o","o",
    			"u","u","u","u","u","u","u","u","u","u","u",
    			"y","y","y","y","y",
    			"d",
    			"A","A","A","A","A","A","A","A","A","A","A","A",
    			"A","A","A","A","A",
    			"E","E","E","E","E","E","E","E","E","E","E",
    			"I","I","I","I","I",
    			"O","O","O","O","O","O","O","O","O","O","O","O","O","O","O","O","O",
    			"U","U","U","U","U","U","U","U","U","U","U",
    			"Y","Y","Y","Y","Y",
    			"D","-","","","","","","","","");
    
    	if ($tolower) {
    		return strtolower(str_replace($marTViet,$marKoDau,$cs));
    	}
    
    	return str_replace($marTViet,$marKoDau,$cs);
    
    }
}
